
// import fs from "fs"
// import Fontmin from "fontmin"
const fs = require("fs")
const Fontmin = require("fontmin") // 需要借助 fontmin 插件
let set = new Set()

//get all possible characters
const scanFolder = (dir, done) => {
    let results = []
    fs.readdir(dir, (err, list) => {
        if (err) {
            return done(err)
        }
        let i = 0
            ; (function iter() {
                // 这里的立即函数触发了闭包，使results的值一直保存
                let file = list[i++]
                if (!file) {
                    // iterator遍历，file不存在即为执行完成状态
                    return done(null, results)
                }
                file = dir + "/" + file
                fs.stat(file, (err, stat) => {
                    if (stat && stat.isDirectory()) {
                        scanFolder(file, (err, res) => {
                            // 重新调用方法，获取子目录下的目录结构
                            results = results.concat(res)
                            iter()
                        })
                    } else {
                        results.push(file)
                        iter() // 执行下一步
                    }
                })
            })()
    })
}
// import abc from "../assets/font/OPPOSans-B-2.ttf"
//get all possible characters
const generateFinalHTML = finalString => {
    const fontmin = new Fontmin()
        .src("../assets/font/OPPOSans-R-2.ttf") // 源字体文件路径
        .dest("../assets/font/fontmin") // 压缩后文件存放路径，最终使用的是这个压缩后的文件
        .use(
            Fontmin.glyph({
                text: finalString, // 也可以直接指定需要生成的字符集
                hinting: false
            })
        )

    fontmin.run(err => {
        if (err) {
            throw err
        }
    })
}

//get all possible characters
// 指定扫描路径，注意路径不同，会导致最终扫描到的字符数不同
scanFolder("../view", (n, results) => {
    results.forEach(file => {
        const result = fs.readFileSync(file, "utf8")
        const currentSet = new Set(result)
        // 获取到每个文件中的字符，并存储到set集中
        set = new Set([...set, ...currentSet])
    })
    generateFinalHTML(Array.from(set).join(""))
    console.log("共生成：" + Array.from(set).length + "个字符")
})
